package com.yxinsur.imc.business.domain;

import java.math.BigDecimal;
import java.util.Date;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.yxinsur.imc.common.annotation.Excel;
import com.yxinsur.imc.common.core.domain.BaseImcEntity;

/**
 * 待导入续期详情对象 imc_prerenewal_detail
 *
 * @author imc
 * @date 2021-05-26
 */
public class ImcPrerenewalDetail extends BaseImcEntity
{
    private static final long serialVersionUID = 1L;

    @TableId(type = IdType.AUTO)
    private String id;

    /** 待导入续期表ID */
    @Excel(name = "待导入续期表ID")
    private String prerenewalId;

    /** 保单表外键 */
    @Excel(name = "保单表外键")
    private Long orderId;

    /** 险种外键 */
    @Excel(name = "险种外键")
    private Long orderRiskId;

    /** 供应商id */
    @Excel(name = "供应商id")
    private Long repoSupplierId;

    /** 产品库表的外键（非我的产品表） */
    @Excel(name = "产品库表的外键", readConverterExp = "非=我的产品表")
    private Long repoInsId;

    /** 险种代码 */
    @Excel(name = "险种代码")
    private String insCode;

    /** 主险M附加险A */
    @Excel(name = "主险M附加险A")
    private String riskType;

    /** 险种名称 */
    @Excel(name = "险种名称")
    private String riskName;

    /** 险种保费-首年的保费[可能存在非年缴多次的保费] */
    @Excel(name = "险种保费-首年的保费[可能存在非年缴多次的保费]")
    private BigDecimal prem;

    /** 应缴保费 */
    @Excel(name = "应缴保费")
    private BigDecimal payablePrem;

    /** 实缴保费 */
    @Excel(name = "实缴保费")
    private BigDecimal paymentPrem;

    /** 折标率 */
    @Excel(name = "折标率")
    private BigDecimal standRate;

    /** 当期保费对应标保 */
    @Excel(name = "当期保费对应标保")
    private BigDecimal standPrem;

    /** 代理人佣金率 */
    @Excel(name = "代理人佣金率")
    private BigDecimal commissionRate;

    /** 佣金 */
    @Excel(name = "佣金")
    private BigDecimal commission;

    //供应商折标率
    private BigDecimal supplierStandRate;


    //年期折算系数
    private BigDecimal yearScale;

    /** 供应商手续费率 */
    @Excel(name = "供应商手续费率")
    private BigDecimal feeRate;

    /** 供应商的基础手续费 */
    @Excel(name = "供应商的基础手续费")
    private BigDecimal baseFee;

    /** 险种基本保额 */
    @Excel(name = "险种基本保额")
    private BigDecimal amount;

    /** 保障期限类型 */
    @Excel(name = "保障期限类型")
    private String coveragePeriodEnum;

    /** 保障期限 */
    @Excel(name = "保障期限")
    private String coveragePeriodValue;

    /** 保障期限单位 */
    @Excel(name = "保障期限单位")
    private String coveragePeriodUnit;

    /** 缴费年期类型 */
    @Excel(name = "缴费年期类型")
    private String chargePeriodEnum;

    /** 缴费期限 */
    @Excel(name = "缴费期限")
    private String chargePeriodValue;

    /** 缴费期限单位 */
    @Excel(name = "缴费期限单位")
    private String chargePeriodUnit;

    /** 领取年龄 */
    @Excel(name = "领取年龄")
    private String pensionAge;

    /** 险种方案外键 */
    @Excel(name = "险种方案外键")
    private Long insSchemeId;

    /** 因子1值 */
    @Excel(name = "因子1值")
    private String factor1Value;

    /** 因子2值 */
    @Excel(name = "因子2值")
    private String factor2Value;

    /** 因子3值 */
    @Excel(name = "因子3值")
    private String factor3Value;

    /** 缴费频率类型 */
    @Excel(name = "缴费频率类型")
    private String chargeIntervalEnum;

    /** 是否自动续保Y N */
    @Excel(name = "是否自动续保Y N")
    private String autoRenewalEnum;

    /** 险种状态 */
    @Excel(name = "险种状态")
    private String riskStatusCode;

    /** 保单所在年度首年为1 */
    @Excel(name = "保单所在年度首年为1")
    private Long policyYear;

    /** 保单缴费次数，首次为1 */
    @Excel(name = "保单缴费次数，首次为1")
    private Long payNum;

    /** 应缴日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "应缴日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date payableDate;

    /** 应缴月 */
    @Excel(name = "应缴月")
    private String payableMonth;

    /** 投保日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "投保日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date applyDate;

    /** 撤单日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "撤单日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date cancelDate;

    /** 撤单原因 */
    @Excel(name = "撤单原因")
    private String cancelCauseNote;

    /** 承保日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "承保日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date insureDate;

    /** 保单生效日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "保单生效日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date effectiveDate;

    /** 保单失效日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "保单失效日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date expiredDate;

    /** 客户回执签收时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "客户回执签收时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date custAckDate;

    /** 回执录入时间(回执录入系统时间) */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "回执录入时间(回执录入系统时间)", width = 30, dateFormat = "yyyy-MM-dd")
    private Date ackDate;

    /** 宽限截止日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "宽限截止日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date graceDate;

    /** 豁免日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "豁免日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date waiverDate;

    /** 豁免原因 */
    @Excel(name = "豁免原因")
    private String waiverCause;

    /** 租户id,一个租户id唯一对一个机构id（默认机构id为根节点id暨法人机构） */
    @Excel(name = "租户id,一个租户id唯一对一个机构id", readConverterExp = "默=认机构id为根节点id暨法人机构")
    private Long tenantId;

    public void setId(String id)
    {
        this.id = id;
    }

    public String getId()
    {
        return id;
    }
    public void setPrerenewalId(String prerenewalId)
    {
        this.prerenewalId = prerenewalId;
    }

    public String getPrerenewalId()
    {
        return prerenewalId;
    }
    public void setOrderId(Long orderId)
    {
        this.orderId = orderId;
    }

    public Long getOrderId()
    {
        return orderId;
    }
    public void setOrderRiskId(Long orderRiskId)
    {
        this.orderRiskId = orderRiskId;
    }

    public Long getOrderRiskId()
    {
        return orderRiskId;
    }
    public void setRepoSupplierId(Long repoSupplierId)
    {
        this.repoSupplierId = repoSupplierId;
    }

    public Long getRepoSupplierId()
    {
        return repoSupplierId;
    }
    public void setRepoInsId(Long repoInsId)
    {
        this.repoInsId = repoInsId;
    }

    public Long getRepoInsId()
    {
        return repoInsId;
    }
    public void setInsCode(String insCode)
    {
        this.insCode = insCode;
    }

    public String getInsCode()
    {
        return insCode;
    }
    public void setRiskType(String riskType)
    {
        this.riskType = riskType;
    }

    public String getRiskType()
    {
        return riskType;
    }
    public void setRiskName(String riskName)
    {
        this.riskName = riskName;
    }

    public String getRiskName()
    {
        return riskName;
    }
    public void setPrem(BigDecimal prem)
    {
        this.prem = prem;
    }

    public BigDecimal getPrem()
    {
        return prem;
    }
    public void setPayablePrem(BigDecimal payablePrem)
    {
        this.payablePrem = payablePrem;
    }

    public BigDecimal getPayablePrem()
    {
        return payablePrem;
    }
    public void setPaymentPrem(BigDecimal paymentPrem)
    {
        this.paymentPrem = paymentPrem;
    }

    public BigDecimal getPaymentPrem()
    {
        return paymentPrem;
    }
    public void setStandRate(BigDecimal standRate)
    {
        this.standRate = standRate;
    }

    public BigDecimal getStandRate()
    {
        return standRate;
    }
    public void setStandPrem(BigDecimal standPrem)
    {
        this.standPrem = standPrem;
    }

    public BigDecimal getStandPrem()
    {
        return standPrem;
    }
    public void setCommissionRate(BigDecimal commissionRate)
    {
        this.commissionRate = commissionRate;
    }

    public BigDecimal getCommissionRate()
    {
        return commissionRate;
    }
    public void setCommission(BigDecimal commission)
    {
        this.commission = commission;
    }

    public BigDecimal getSupplierStandRate() {
        return supplierStandRate;
    }

    public void setSupplierStandRate(BigDecimal supplierStandRate) {
        this.supplierStandRate = supplierStandRate;
    }


    public BigDecimal getYearScale() {
        return yearScale;
    }

    public void setYearScale(BigDecimal yearScale) {
        this.yearScale = yearScale;
    }

    public BigDecimal getCommission()
    {
        return commission;
    }
    public void setFeeRate(BigDecimal feeRate)
    {
        this.feeRate = feeRate;
    }

    public BigDecimal getFeeRate()
    {
        return feeRate;
    }
    public void setBaseFee(BigDecimal baseFee)
    {
        this.baseFee = baseFee;
    }

    public BigDecimal getBaseFee()
    {
        return baseFee;
    }
    public void setAmount(BigDecimal amount)
    {
        this.amount = amount;
    }

    public BigDecimal getAmount()
    {
        return amount;
    }
    public void setCoveragePeriodEnum(String coveragePeriodEnum)
    {
        this.coveragePeriodEnum = coveragePeriodEnum;
    }

    public String getCoveragePeriodEnum()
    {
        return coveragePeriodEnum;
    }
    public void setCoveragePeriodValue(String coveragePeriodValue)
    {
        this.coveragePeriodValue = coveragePeriodValue;
    }

    public String getCoveragePeriodValue()
    {
        return coveragePeriodValue;
    }
    public void setCoveragePeriodUnit(String coveragePeriodUnit)
    {
        this.coveragePeriodUnit = coveragePeriodUnit;
    }

    public String getCoveragePeriodUnit()
    {
        return coveragePeriodUnit;
    }
    public void setChargePeriodEnum(String chargePeriodEnum)
    {
        this.chargePeriodEnum = chargePeriodEnum;
    }

    public String getChargePeriodEnum()
    {
        return chargePeriodEnum;
    }
    public void setChargePeriodValue(String chargePeriodValue)
    {
        this.chargePeriodValue = chargePeriodValue;
    }

    public String getChargePeriodValue()
    {
        return chargePeriodValue;
    }
    public void setChargePeriodUnit(String chargePeriodUnit)
    {
        this.chargePeriodUnit = chargePeriodUnit;
    }

    public String getChargePeriodUnit()
    {
        return chargePeriodUnit;
    }
    public void setPensionAge(String pensionAge)
    {
        this.pensionAge = pensionAge;
    }

    public String getPensionAge()
    {
        return pensionAge;
    }
    public void setInsSchemeId(Long insSchemeId)
    {
        this.insSchemeId = insSchemeId;
    }

    public Long getInsSchemeId()
    {
        return insSchemeId;
    }
    public void setFactor1Value(String factor1Value)
    {
        this.factor1Value = factor1Value;
    }

    public String getFactor1Value()
    {
        return factor1Value;
    }
    public void setFactor2Value(String factor2Value)
    {
        this.factor2Value = factor2Value;
    }

    public String getFactor2Value()
    {
        return factor2Value;
    }
    public void setFactor3Value(String factor3Value)
    {
        this.factor3Value = factor3Value;
    }

    public String getFactor3Value()
    {
        return factor3Value;
    }
    public void setChargeIntervalEnum(String chargeIntervalEnum)
    {
        this.chargeIntervalEnum = chargeIntervalEnum;
    }

    public String getChargeIntervalEnum()
    {
        return chargeIntervalEnum;
    }
    public void setAutoRenewalEnum(String autoRenewalEnum)
    {
        this.autoRenewalEnum = autoRenewalEnum;
    }

    public String getAutoRenewalEnum()
    {
        return autoRenewalEnum;
    }
    public void setRiskStatusCode(String riskStatusCode)
    {
        this.riskStatusCode = riskStatusCode;
    }

    public String getRiskStatusCode()
    {
        return riskStatusCode;
    }
    public void setPolicyYear(Long policyYear)
    {
        this.policyYear = policyYear;
    }

    public Long getPolicyYear()
    {
        return policyYear;
    }
    public void setPayNum(Long payNum)
    {
        this.payNum = payNum;
    }

    public Long getPayNum()
    {
        return payNum;
    }
    public void setPayableDate(Date payableDate)
    {
        this.payableDate = payableDate;
    }

    public Date getPayableDate()
    {
        return payableDate;
    }
    public void setPayableMonth(String payableMonth)
    {
        this.payableMonth = payableMonth;
    }

    public String getPayableMonth()
    {
        return payableMonth;
    }
    public void setApplyDate(Date applyDate)
    {
        this.applyDate = applyDate;
    }

    public Date getApplyDate()
    {
        return applyDate;
    }
    public void setCancelDate(Date cancelDate)
    {
        this.cancelDate = cancelDate;
    }

    public Date getCancelDate()
    {
        return cancelDate;
    }
    public void setCancelCauseNote(String cancelCauseNote)
    {
        this.cancelCauseNote = cancelCauseNote;
    }

    public String getCancelCauseNote()
    {
        return cancelCauseNote;
    }
    public void setInsureDate(Date insureDate)
    {
        this.insureDate = insureDate;
    }

    public Date getInsureDate()
    {
        return insureDate;
    }
    public void setEffectiveDate(Date effectiveDate)
    {
        this.effectiveDate = effectiveDate;
    }

    public Date getEffectiveDate()
    {
        return effectiveDate;
    }
    public void setExpiredDate(Date expiredDate)
    {
        this.expiredDate = expiredDate;
    }

    public Date getExpiredDate()
    {
        return expiredDate;
    }
    public void setCustAckDate(Date custAckDate)
    {
        this.custAckDate = custAckDate;
    }

    public Date getCustAckDate()
    {
        return custAckDate;
    }
    public void setAckDate(Date ackDate)
    {
        this.ackDate = ackDate;
    }

    public Date getAckDate()
    {
        return ackDate;
    }
    public void setGraceDate(Date graceDate)
    {
        this.graceDate = graceDate;
    }

    public Date getGraceDate()
    {
        return graceDate;
    }
    public void setWaiverDate(Date waiverDate)
    {
        this.waiverDate = waiverDate;
    }

    public Date getWaiverDate()
    {
        return waiverDate;
    }
    public void setWaiverCause(String waiverCause)
    {
        this.waiverCause = waiverCause;
    }

    public String getWaiverCause()
    {
        return waiverCause;
    }
    public void setTenantId(Long tenantId)
    {
        this.tenantId = tenantId;
    }

    public Long getTenantId()
    {
        return tenantId;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("prerenewalId", getPrerenewalId())
            .append("orderId", getOrderId())
            .append("orderRiskId", getOrderRiskId())
            .append("repoSupplierId", getRepoSupplierId())
            .append("repoInsId", getRepoInsId())
            .append("insCode", getInsCode())
            .append("riskType", getRiskType())
            .append("riskName", getRiskName())
            .append("prem", getPrem())
            .append("payablePrem", getPayablePrem())
            .append("paymentPrem", getPaymentPrem())
            .append("standRate", getStandRate())
            .append("standPrem", getStandPrem())
            .append("commissionRate", getCommissionRate())
            .append("commission", getCommission())
            .append("feeRate", getFeeRate())
            .append("baseFee", getBaseFee())
            .append("amount", getAmount())
            .append("coveragePeriodEnum", getCoveragePeriodEnum())
            .append("coveragePeriodValue", getCoveragePeriodValue())
            .append("coveragePeriodUnit", getCoveragePeriodUnit())
            .append("chargePeriodEnum", getChargePeriodEnum())
            .append("chargePeriodValue", getChargePeriodValue())
            .append("chargePeriodUnit", getChargePeriodUnit())
            .append("pensionAge", getPensionAge())
            .append("insSchemeId", getInsSchemeId())
            .append("factor1Value", getFactor1Value())
            .append("factor2Value", getFactor2Value())
            .append("factor3Value", getFactor3Value())
            .append("chargeIntervalEnum", getChargeIntervalEnum())
            .append("autoRenewalEnum", getAutoRenewalEnum())
            .append("riskStatusCode", getRiskStatusCode())
            .append("policyYear", getPolicyYear())
            .append("payNum", getPayNum())
            .append("payableDate", getPayableDate())
            .append("payableMonth", getPayableMonth())
            .append("applyDate", getApplyDate())
            .append("cancelDate", getCancelDate())
            .append("cancelCauseNote", getCancelCauseNote())
            .append("insureDate", getInsureDate())
            .append("effectiveDate", getEffectiveDate())
            .append("expiredDate", getExpiredDate())
            .append("custAckDate", getCustAckDate())
            .append("ackDate", getAckDate())
            .append("graceDate", getGraceDate())
            .append("waiverDate", getWaiverDate())
            .append("waiverCause", getWaiverCause())
            .append("createId", getCreateId())
            .append("createTime", getCreateTime())
            .append("updateId", getUpdateId())
            .append("updateTime", getUpdateTime())
            .append("isDeleted", getIsDeleted())
            .append("tenantId", getTenantId())
            .toString();
    }
}
